As data passes in and out of memory, various types of errors can occur. More commonly, they are single bit errors, but 2-bit, and other types of errors may also occur. Error checking is commonly used to check for the integrity of data as data is written to and read from memory. Error checking may comprise error detection and/or error correction. Error detection is the ability to detect the presence of errors caused by noise or other impairments during transmission. Error correction is the additional ability to reconstruct the original, error-free data. There are many schemes available.
Error correction code (ECC) is one example of an error checking scheme, specifically, error correction. In ECC, for example, as data is sent across a memory bus, ECC generation logic, e.g., an exclusive OR algorithm, is calculated over the data to generate an ECC. The data and ECC are then stored together in memory. When data is subsequently accessed (along with the ECC) from memory, ECC error decode logic is applied to the data to generate error detection and correction information. The data can then be corrected using this information.